<?php 

/**
 * QIAQIA 常用函数
 * ============================================================================
 * * 版权所有 维赛网络工作室，并保留所有权利。
 * 网站地址: http://www.weisai.net；
 * ----------------------------------------------------------------------------
 * 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和
 * 使用；不允许对程序代码以任何形式任何目的的再发布。
 * ============================================================================
 * $Author: hungry $
 * $Id: common.php  $
 */
/**
 * 404页面
 *
 * @param string $input 输入值
 * @param string $t 检查类型
 * @param int $n 字数
 * @param int $is_null 能否为空
 * @return string
 */
function hy_404()
{
	header("HTTP/1.1 404 Not Found");
	include(HTML_PATH.'/index.html');
	exit;
}
//随机数
function hy_rand($length)
{
	$pattern = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ';
	$rand='';
	for($i = 0; $i < $length; $i ++) {
		$rand .= $pattern {mt_rand ( 0, 61 )}; //生成php随机数
	}
	return $rand ;
}
//随机数字
function rand_match($length)
{
	$pattern = '1234567890';
	$rand='';
	for($i = 0; $i < $length; $i ++) {
		$rand .= $pattern {mt_rand ( 0, 9 )}; //生成php随机数
	}
	return $rand ;
}
/**
 * 检查输入内容
 *
 * @param string $input 输入值
 * @param string $t 检查类型
 * @param int $n 字数
 * @param int $is_null 能否为空
 * @return string
 */
function hy_check($input,$t='',$n=-1,$is_null=0)
{
	$error=0;
	
	$input=trim($input);
	if($is_null>0&&empty($input))
	{
		$error++;
	}
	
	if($n!=-1)
	{
		$real_num=0;
		$num = strlen($input);
		for($i=0;$i<$num;$i++){
			
			if(ord(substr($input,$i,$i+1)) > 127){
				
				
				$i = $i+2;//utf8下为加2
				
			}
			$real_num++;
		}
		if(strpos($n,'-'))
		{
			$n=explode('-',$n);
			$min=$n[0];
			$max=$n[1];
			if($real_num<$min||$real_num>$max)
			{
				$error++;
			}
		}
		else 
		{
		if($real_num>$n)
		$error++;
		}
	}
	
	if(isset($input[0]))
	{
	if($t=='e')//email
	{
		if(!isset($input[6]) || !preg_match("/^[\w\-\.]+@[\w\-]+(\.\w+)+$/", $input))
		{
			$error++;
		}
	}
	elseif($t=='c')//chinese
	{
		if(!preg_match('/^[\x{4e00}-\x{9fa5}\.]+$/u', $input)&&!preg_match('/^['.chr(0xa1).'-'.chr(0xff).']+$/', $input))
		{
			$error++;
		}
	}
	elseif ($t=='f')//float
	{
		if(!preg_match('/(^\d+$)|(^\d+[.0-9]+$)/', $input))
		{
			$error++;
		}
	}
	elseif ($t=='n')//number
	{
		if(!ctype_digit($input))
		{
			$error++;
		}
	}
	elseif($t=='un')//username
	{
		if(!preg_match('/^[A-Za-z0-9_]+$/i', $input))//preg_replace('/\W/','',$content);
		{
			$error++;
		}
	}
	elseif($t=='gr')//realname-gbk
	{
		if(!(preg_match('/^['.chr(0xa1).'-'.chr(0xff).']+$/', $input)||preg_match('/^[a-zA-Z\s]+$/i', $input)))
		{
			$error++;
		}
	}
	elseif($t=='ur')//realname-utf8
	{
		if(!(preg_match('/^[\x{4e00}-\x{9fa5}\.]+$/u', $input)||preg_match('/^[a-zA-Z\s]+$/i', $input)))
		{
			$error++;
		}
	}
	elseif ($t=='m')//mobile
	{
		if(!preg_match("/^1[3-5,8]{1}[0-9]{9}$/", $input))
		{
			$error++;
		}
	}
	elseif ($t=='t')//tel
	{
		if(!preg_match("/^([0-9]{3,4}-)?[0-9]{7,8}$/", $input))
		{
			$error++;
		}
	}
	elseif($t=='u')//url
	{
		if(!preg_match("/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\’:+!]*([^<>\"])*$/", $input))
		{
			$error++;
		}
	}
	elseif($t=='i')// identification card 
	{
		$id = strtoupper($input);
		$regx = "/(^\d{15}$)|(^\d{17}([0-9]|X)$)/";
		$arr_split = array();
		if(!preg_match($regx, $id))
		{
			$error++;
		}
		if(15==strlen($id)) //检查15位
		{
			$regx = "/^(\d{6})+(\d{2})+(\d{2})+(\d{2})+(\d{3})$/";
		
			@preg_match($regx, $id, $arr_split);
			//检查生日日期是否正确
			$dtm_birth = "19".$arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4];
			if(!strtotime($dtm_birth))
			{
				$error++;
			} 
		}
		else           //检查18位
		{
			$regx = "/^(\d{6})+(\d{4})+(\d{2})+(\d{2})+(\d{3})([0-9]|X)$/";
			@preg_match($regx, $id, $arr_split);
			$dtm_birth = $arr_split[2] . '/' . $arr_split[3]. '/' .$arr_split[4];
			if(!strtotime($dtm_birth))  //检查生日日期是否正确
			{
				$error++;
			}
			else
			{
				//检验18位身份证的校验码是否正确。
				//校验位按照ISO 7064:1983.MOD 11-2的规定生成，X可以认为是数字10。
				$arr_int = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
				$arr_ch = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
				$sign = 0;
				for ( $i = 0; $i < 17; $i++ )
				{
					$b = (int) $id{$i};
					$w = $arr_int[$i];
					$sign += $b * $w;
				}
				$n  = $sign % 11;
				$val_num = $arr_ch[$n];
				if ($val_num != substr($id,17, 1))
				{
					$error++;
				}
				
			}
		}
	}
	}
	
	
	
	if($error==0)
	{
		return $input;
	}
	else 
	{
		return '#@_error';
	}
}
/**
 * 字符串长度
 *
 * @access      public
 * @param       string      string  内容
 * @return      string
 * @author Hungry
 */
function hy_strlen($str,$char='utf8')
{
	$real_num=0;
	$num = strlen($str);
	for($i=0;$i<$num;$i++)
	{
			
		if(ord(substr($str,$i,$i+1)) > 127)
		{
	
	
			if($char=='utf8')
			{
			$i = $i+2;//utf8下为加2
			}
			else//gbk 
			{
				$i = $i+1;
			}
	
		}
		$real_num++;
	}
	return $real_num;
}
/**
 * 对 MYSQL LIKE 的内容进行转义
 *
 * @access      public
 * @param       string      string  内容
 * @return      string
 */
function mysql_like_quote($str)
{
	return strtr($str, array("\\\\" => "\\\\\\\\", '_' => '\_', '%' => '\%', "\'" => "\\\\\'"));
}

/**
 * utf8特殊符号过滤(只保留汉字字母英文下划线)
 *
 * @access      public
 * @param $data 数据
 * @return
 */
function hy_sql_filter($data)
{
// 	/return preg_replace("#[^A-Za-z0-9|]#","",$data);
	return preg_replace("/[^\x{4e00}-\x{9fa5}A-Za-z0-9_]/u","",$data);
}
/**
 * 字符串过滤
 *
 * @access      public
 * @param $deeper 是否深入
 * @return      null
 */
function hy_filter($deeper=0)
{
	
	if($deeper>0)
	{
		if (!empty($_GET))
		{
			$_GET  = addslashes_deeper($_GET);
		}
		if (!empty($_POST))
		{
			$_POST = addslashes_deeper($_POST);
		}
		
		$_COOKIE   = addslashes_deeper($_COOKIE);
		$_REQUEST  = addslashes_deeper($_REQUEST);
	}
	else 
	{
		if (!empty($_GET))
		{
			$_GET  = addslashes_deep($_GET);
		}
		if (!empty($_POST))
		{
			$_POST = addslashes_deep($_POST);
		}
	
		$_COOKIE   = addslashes_deep($_COOKIE);
		$_REQUEST  = addslashes_deep($_REQUEST);
	}
}
/**
 * 过滤特殊字符
 *
 * @access  public
 * @param   string
 *
 * @return  string
 */
function post_check($post) {
	if (!get_magic_quotes_gpc()) { // 判断magic_quotes_gpc是否为打开
		$post = addslashes($post); // 进行magic_quotes_gpc没有打开的情况对提交数据的过滤
	}
	$post = str_replace("_", "\_", $post); // 把 '_'过滤掉
	$post = str_replace("%", "\%", $post); // 把 '%'过滤掉
	$post = nl2br($post); // 回车转换
	$post = htmlspecialchars($post); // html标记转换

	return $post;
}
/**
 * 递归方式的对变量中的特殊字符进行转义
 *
 * @access  public
 * @param   mix     $value
 *@param   mix     $deeper 深入过滤
 * @return  mix
 */
function addslashes_deeper($value,$deeper=0)
{
	if (empty($value))
	{
		return $value;
	}
	else
	{
		
		return is_array($value) ? array_map('addslashes_deep', $value) : post_check($value);
		
		
	}
}
/**
 * 递归方式的对变量中的特殊字符进行转义
 *
 * @access  public
 * @param   mix     $value
 *@param   mix     $deeper 深入过滤
 * @return  mix
 */
function addslashes_deep($value,$deeper=0)
{
	if (empty($value)||get_magic_quotes_gpc() )
	{
		return $value;
	}
	else
	{
		
			return is_array($value) ? array_map('addslashes_deep', $value) : addslashes($value);
		
	}
}
/**
 * 获取ip
 *
 * @access      public
 * @param      
 * @return      string
 */
// function hy_getIP()

// {

	
//     $ip='';
// 	if (getenv("HTTP_CLIENT_IP"))

// 		$ip = getenv("HTTP_CLIENT_IP");

// 	else if(getenv("HTTP_X_FORWARDED_FOR"))

// 		$ip = getenv("HTTP_X_FORWARDED_FOR");

// 	else if(getenv("REMOTE_ADDR"))

// 		$ip = getenv("REMOTE_ADDR");

// 	else $ip = "Unknow";

// 	return $ip;

// }

function hy_getIP()
{
	static $realip;
	if (isset($_SERVER)){
		if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
			$realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
		} else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
			$realip = $_SERVER["HTTP_CLIENT_IP"];
		} else {
			$realip = $_SERVER["REMOTE_ADDR"];
		}
	} else {
		if (getenv("HTTP_X_FORWARDED_FOR")){
			$realip = getenv("HTTP_X_FORWARDED_FOR");
		} else if (getenv("HTTP_CLIENT_IP")) {
			$realip = getenv("HTTP_CLIENT_IP");
		} else {
			$realip = getenv("REMOTE_ADDR");
		}
	}
	return $realip;
}

/**
 * 操作语言
 *
 * @access      public
 * @param       string      name     名
 * @param       string      value     值
 * @return      bool
 */
function Lang($name=null, $value=null){

	 static $_lang = array();
    // 空参数返回所有定义
    if (empty($name))
        return $_lang;
    // 判断语言获取(或设置)
    // 若不存在,直接返回全大写$name
    if (is_string($name)) {
        $name = strtoupper($name);
        if (is_null($value))
            return isset($_lang[$name]) ? $_lang[$name] : $name;
        $_lang[$name] = $value; // 语言定义
        return;
    }
    // 批量定义
    if (is_array($name))
    {
    	
        $_lang = array_merge($_lang, array_change_key_case($name, CASE_UPPER));
    }
    return;
}
/**
 * 实例化Controller类
 *
 * @access      public
 * @param       string      classname     类名
 *
 * @return      bool
 */
function Ctrl($classname){
	
	$class = $classname."Controller";
	
	//初始化对应的类
	if (class_exists($class))
	{
		$controller = new $class;
		return $controller;
	}
	else
	{
		//类的命名正确吗？
		return false;
	}
}
/**
 * 获取配置值
 *
 * @access      public
 * @param       string     name     键名
 * @param       string     value     值
 * @return      string
 */
 
function C($name=null, $value=null) {
	static $_config = array();
	// 无参数时获取所有
	if (empty($name))   return $_config;
	// 优先执行设置获取或赋值
	if (is_string($name)) {
		if (!strpos($name, '.')) {
			$name = strtolower($name);
			if (is_null($value))
				return isset($_config[$name]) ? $_config[$name] : null;
			
			$_config[$name] = $value;
			return;
		}
		// 二维数组设置和获取支持
		$name = explode('.', $name);
		$name[0]   =  strtolower($name[0]);
		if (is_null($value))
			return isset($_config[$name[0]][$name[1]]) ? $_config[$name[0]][$name[1]] : null;
		$_config[$name[0]][$name[1]] = $value;
		return;
	}
	// 批量设置
	if (is_array($name)){
		return $_config = array_merge($_config, array_change_key_case($name));
	}
	return null; // 避免非法参数
}
/**
 * 实例化Model类
 *
 * @access      public
 * @param       string      classname     类名
 *
 * @return      bool
 */
function Model($classname=''){
	
	$class = $classname."Model";
	//初始化对应的类
	if (class_exists($class))
	{
		$model = new $class;
		return $model;
	}
	else
	{
		//类的命名正确吗？
		return false;
	}
}



/**
 * 截取字符窜
 *
 * @access      public
 * @param       string      $str            要截取的字符串
 * @param       string      $num            数量
 * @param       bool      $ellipsis         是否省略号
 * @return      string
 */
function hy_substr($str,$num,$ellipsis=false)
{
   $new_str='';
   $str=trim($str);
   $suffix='';
   if($ellipsis)
   {
   	$suffix='...';
   }
   if(hy_strlen($str)<=$num)
   {
   	 $new_str=$str;
   }
   else 
   {
    for($i=0;$i<$num;$i++)
   {
	
	    if(ord(substr($str,$i,$i+1)) > 127)
	    {
		 
		 $new_str.=substr($str,$i,3);
		 
		  $i = $i+2;
		  $num = $num+2;
	    }
	    else 
	   {
	   	$new_str.=substr($str,$i,1);
	   }
	
    }
    $new_str=$new_str.$suffix;
   }
   return $new_str;
}
/**
 * 双语过滤内容
 *
 * @access      public
 * @param       string      $str            内容
  @param       int      $type            0:自动1:返回中文2:返回英文 other:返回数组
 * @return      array
 * $author Hungry
 */
function hy_dig_filter($str,$type=0)
{
	$arr=array();
	$arr[1]=stristr($str,EN_SC);
	$str=str_replace($arr[1],'',$str);
	$arr[1]=str_replace(DIG_EC,'',str_replace(EN_SC,'',$arr[1]));
	$arr[0]=str_replace(DIG_EC,'',str_replace(CH_SC,'',$str));
	if($type==0)
	{
		if(DEFAULT_LANG=='en_us')
		   	{
				if($arr[1]!='')
				{
		   		   return $arr[1];
				}
				else
				{
					return $arr[0];
				}
		   		
		   	}
		   	else 
		   	{
		   		
		   		return $arr[0];
			}
	}
	elseif($type==1)
	{
		return $arr[0];
	}
	elseif($type==2)
	{
		return $arr[1];
	}
	else
	{
	return $arr;
	}
}

/**
 * session管理函数
 * @param string|array $name session名称 如果为数组则表示进行session设置
 * @param mixed $value session值
 * @return mixed
 */
function session($name,$value='') {
	global $session_prefix;
	global $session_id;
	global $session_type;
	$prefix   =  $session_prefix;
	if(is_array($name)) { // session初始化 在session_start 之前调用
		if(isset($name['prefix'])) $session_prefix=$name['prefix'];
		if($session_id && isset($_REQUEST[$session_id])){
			session_id($_REQUEST[$session_id]);
		}elseif(isset($name['id'])) {
			session_id($name['id']);
		}
		ini_set('session.auto_start', 0);
		if(isset($name['name']))            session_name($name['name']);
		if(isset($name['path']))            session_save_path($name['path']);
		if(isset($name['domain']))          ini_set('session.cookie_domain', $name['domain']);
		if(isset($name['expire']))          ini_set('session.gc_maxlifetime', $name['expire']);
		if(isset($name['use_trans_sid']))   ini_set('session.use_trans_sid', $name['use_trans_sid']?1:0);
		if(isset($name['use_cookies']))     ini_set('session.use_cookies', $name['use_cookies']?1:0);
		if(isset($name['cache_limiter']))   session_cache_limiter($name['cache_limiter']);
		if(isset($name['cache_expire']))    session_cache_expire($name['cache_expire']);
		if(isset($name['type']))            $session_type=$name['type'];
		
		if($session_type) { // 读取session驱动
			$class      = 'Session'. ucwords(strtolower($session_type));
			// 检查驱动类
			/*if(require_cache(EXTEND_PATH.'Driver/Session/'.$class.'.class.php')) {
				$hander = new $class();
				$hander->execute();
			}else {
				// 类没有定义
				throw_exception(L('_CLASS_NOT_EXIST_').': ' . $class);
			}*/
		}
		// 启动session
		
		if(SESSION_AUTO_START)  session_start();
	}elseif('' === $value){
		if(0===strpos($name,'[')) { // session 操作
			if('[pause]'==$name){ // 暂停session
				session_write_close();
			}elseif('[start]'==$name){ // 启动session
				session_start();
			}elseif('[destroy]'==$name){ // 销毁session
				$_SESSION =  array();
				session_unset();
				session_destroy();
			}elseif('[regenerate]'==$name){ // 重新生成id
				session_regenerate_id();
			}
		}elseif(0===strpos($name,'?')){ // 检查session
			$name   =  substr($name,1);
			if($prefix) {
				return isset($_SESSION[$prefix][$name]);
			}else{
				return isset($_SESSION[$name]);
			}
		}elseif(is_null($name)){ // 清空session
			if($prefix) {
				unset($_SESSION[$prefix]);
			}else{
				$_SESSION = array();
			}
		}elseif($prefix){ // 获取session
			return isset($_SESSION[$prefix][$name])?$_SESSION[$prefix][$name]:null;
		}else{
			return isset($_SESSION[$name])?$_SESSION[$name]:null;
		}
	}elseif(is_null($value)){ // 删除session
		if($prefix){
			unset($_SESSION[$prefix][$name]);
		}else{
			unset($_SESSION[$name]);
		}
	}else{ // 设置session
		if($prefix){
			if (!is_array($_SESSION[$prefix])) {
				$_SESSION[$prefix] = array();
			}
			$_SESSION[$prefix][$name]   =  $value;
		}else{
			$_SESSION[$name]  =  $value;
		}
	}
}
/**
 *移除格式
 *
 * @access  public
 * @param
 * @return  string
 */
 function remove_comment($var)
{
	return (substr($var, 0, 2) != '--');
}
/**
 * Cookie 设置、获取、删除
 * @param string $name cookie名称
 * @param mixed $value cookie值
 * @param mixed $options cookie参数
 * @return mixed
 */
function cookie($name, $value='', $option=null) {
	
	global $cookie_expire;
	global $cookie_domain;      // Cookie有效域名
	global $cookie_path;     // Cookie路径
	global $cookie_prefix ;     // Cookie前缀 避免冲突
	// 默认设置
	$config = array(
			'prefix'    =>  $cookie_prefix, // cookie 名称前缀
			'expire'    =>  $cookie_expire, // cookie 保存时间
			'path'      =>  $cookie_path, // cookie 保存路径
			'domain'    =>  $cookie_domain, // cookie 有效域名
	);
	// 参数设置(会覆盖黙认设置)
	if (!empty($option)) {
		if (is_numeric($option))
			$option = array('expire' => $option);
		elseif (is_string($option))
		parse_str($option, $option);
		$config     = array_merge($config, array_change_key_case($option));
	}
	// 清除指定前缀的所有cookie
	if (is_null($name)) {
		if (empty($_COOKIE))
			return;
		// 要删除的cookie前缀，不指定则删除config设置的指定前缀
		$prefix = empty($value) ? $config['prefix'] : $value;
		if (!empty($prefix)) {// 如果前缀为空字符串将不作处理直接返回
			foreach ($_COOKIE as $key => $val) {
				if (0 === stripos($key, $prefix)) {
					setcookie($key, '', time() - 3600, $config['path'], $config['domain']);
					unset($_COOKIE[$key]);
				}
			}
		}
		return;
	}
	$name = $config['prefix'] . $name;
	if ('' === $value) {
		return isset($_COOKIE[$name]) ? json_decode(MAGIC_QUOTES_GPC?stripslashes($_COOKIE[$name]):$_COOKIE[$name]) : null; // 获取指定Cookie
	} else {
		if (is_null($value)) {
			setcookie($name, '', time() - 3600, $config['path'], $config['domain']);
			unset($_COOKIE[$name]); // 删除指定cookie
		} else {
			// 设置cookie
			$value  = json_encode($value);
			$expire = !empty($config['expire']) ? time() + intval($config['expire']) : 0;
			setcookie($name, $value, $expire, $config['path'], $config['domain']);
			$_COOKIE[$name] = $value;
		}
	}
}

/**
 *计算时区间的差值 单位秒
 *@param $remote;
 *@param $origin;如果为空则使用当前时区
 *@return $offset;时区间的时差的时间戳
 */
function yf_get_timezone_offset($remote, $origin = '')
{
	if(empty($origin))
	{
		if(!is_string($origin = date_default_timezone_get()))
		{
			return false;
		}
	}
	$origin1 = new DateTimeZone($origin);
	$remote1 = new DateTimeZone($remote);
	$origin2 = new DateTime('now', $origin1);
	$remote2 = new DateTime('now', $remote1);
	$offset = $origin1->getOffset($origin2) - $remote1->getOffset($remote2);
	return $offset;
}

/**
 * 获取计算后的当前时间戳
 * @return $time;时间戳
 */
function yf_time()
{
	$offset = yf_get_timezone_offset('PRC');
	$time = time() - $offset;
	return $time;
}

/**
 * 处理判断表单值是否为空
 * @param $val;
 * @param $content;
 * @param $type;是否是默认值
 * @return ;
 */
function yf_empty($val, $content = '', $type = false)
{
	if($type)
	{
		if(empty($val))
		{
			$val = $content; 
		}
	}
	else 
	{
		if(empty($val))
		{
			$result = array('error' => '1', 'content' => $content);
			print_r(json_encode($result));
			exit;
		}
	}
	return $val;
}

/**
 * 处理插入数据库的数组
 * @param $info;
 * @return ;
 */
function yf_set_insert($info)
{
	if(empty($info))
	{
		$result = array('error' => '1', 'content' => '插入的数组为空');
		print_r(json_encode($result));
		exit;
	}
	else 
	{
		if(!is_array($info))
		{
			$result = array('error' => '1', 'content' => '插入的不是数组');
			print_r(json_encode($result));
			exit;
		}
		else
		{
			foreach($info as $k => $v)
			{
				$key[] = "`".$k."`";
				$val[] = "'".$v."'";
			}
			$data['key'] = implode(",", $key);
			$data['val'] = implode(",", $val);
			return $data;
		}
	}
}

/**
 * 处理更新数据库的数组
 * @param $info;
 * @return ;
 */
function yf_set_update($info)
{
	if(empty($info))
	{
		$result = array('error' => '1', 'content' => '更新的数组为空');
		print_r(json_encode($result));
		exit;
	}
	else
	{
		if(!is_array($info))
		{
			$result = array('error' => '1', 'content' => '更新的不是数组');
			print_r(json_encode($result));
			exit;
		}
		else
		{
			foreach($info as $k => $v)
			{
				$key[] = "`".$k."`='".$v."'";
			}
			$data = implode(",", $key);
			return $data;
		}
	}
}

/**
 * 导出表单
 * @param $table;表头
 * @param $info;表内容
 * @param $name;下载的文件名
 */
function yf_daochu($table, $info, $name = 'down')
{
	header("Content-type:text/html;charset=gb2312");
	include(ROOT_PATH."Qiaqia/Vendor/PHPExcel/PHPExcel.php");
	
	$excel = new PHPExcel();
	$letter = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
	
	for($i = 0; $i < count($table); $i++)
	{
		$excel->getActiveSheet()->setCellValue("$letter[$i]1", "$table[$i]");
	}
	
	for($i = 2; $i <= count($info) + 1; $i++) 
	{
		$j = 0;
		foreach($info[$i - 2] as $key => $value) 
		{	
			$excel->getActiveSheet()->setCellValue("$letter[$j]$i", "$value");
			$j++;
		}
	}
	header('Content-Type: application/vnd.ms-excel');
	
	header('Content-Disposition: attachment;filename="'.$name.'.xls"');
	header('Cache-Control: max-age=0');
	$objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel5');
	$objWriter->save('php://output');
}
//导出excel格式表
function exportData($filename,$title,$data){
// 	header("Content-type: text/html; charset=utf-8");
	header("Content-Type: application/vnd.ms-excel; charset=gb2312");
	header("Pragma: public");
	header("Expires: 0");
	header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
	header("Content-Type: application/force-download");
	header("Content-Type: application/octet-stream");
	header("Content-Type: application/download");

	header("Content-Transfer-Encoding: binary ");
	//header("Content-type: application/vnd.ms-excel");
	header("Content-disposition: attachment; filename="  . $filename . ".xls");
	echo "<table  border='1' style='font-family:SimSun;font-size:18px;' >"; //边框
	echo "<tr >";
	if (is_array($title)){
		foreach ($title as $key => $value){
// 			echo "<td style='background-color:yellow;'>" .iconv("utf-8", "gb2312", $value)."</td>";
			echo "<td style='background-color:yellow;width:100%;'>" .$value."</td>";
			//echo $value."\t";
		}
	}
	echo "</tr>";
	if (is_array($data)){
		foreach ($data as $key => $value){
			echo "<tr>";
			foreach ($value as $_key => $_value){
				echo "<td style='width:100%' >".$_value."</td>";
				// 				echo $_value."\t";
				// 				echo iconv("UTF-8", "GBK", $_value."\t");
// 				echo "<td style='width:100%' >".mb_convert_encoding($_value."\t", "gb2312", "UTF-8")."</td>";
			}
			echo "</tr>";
		}
	}
	echo "</table>";
}

function export_csv($filename,$data)
{
    header("Content-type:text/csv");
    header("Content-Disposition:attachment;filename=".$filename);
    header('Cache-Control:must-revalidate,post-check=0,pre-check=0');
    header('Expires:0');
    header('Pragma:public');
    echo $data;
}
/**
 * 导入excel
 * @param $table;数据库字段，数组样式 array("`username`", "`gender`");
 * @param $table_name;数据库表名, article
 * @param $file;上传的文件$_FILES
 * @param $head;文件内容是否有头部
 * @return boolean
 */
function yf_entry($table, $table_name, $file, $head = true)
{
	$filePath = ROOT_PATH.'Uploads/excel/';
	$str = "";
			
	include(ROOT_PATH."Qiaqia/Vendor/PHPExcel/PHPExcel.php");
	include(ROOT_PATH."Qiaqia/Vendor/PHPExcel/PHPExcel/IOFactory.php");
	include(ROOT_PATH."Qiaqia/Vendor/PHPExcel/PHPExcel/Reader/Excel5.php");
	
	$time = date("YmdHis");

	$extend = strrchr($file['name'], '.');

	$name = $time.$extend;
	
	$uploadfile = $filePath.$name;
	
	$result = move_uploaded_file($file['tmp_name'], $uploadfile);
	if($result) 
	{
		$objReader = PHPExcel_IOFactory::createReader('Excel5');
		$objPHPExcel = $objReader->load($uploadfile);
		$sheet = $objPHPExcel->getSheet(0);
		$highestRow = $sheet->getHighestRow();
		$highestColumn = $sheet->getHighestColumn();
		
		$objWorksheet = $objPHPExcel->getActiveSheet();
		$highestRow = $objWorksheet->getHighestRow();
	
		$highestColumn = $objWorksheet->getHighestColumn();
		$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);//总列数
	
		$headtitle = array();
		
		$count = count($table);
		$table = implode(",", $table);
		
		if($head)
		{
			$row = 2;
		}
		else
		{
			$row = 1;
		}
		
		for($row; $row <= $highestRow; $row++)
		{
			$strs = array();
			$key = array();
			for($col = 0; $col < $highestColumnIndex; $col++)
			{
				$strs[$col] = $objWorksheet->getCellByColumnAndRow($col, $row)->getValue();
			}
			for($i = 0; $i < $count; $i++)
			{
				$key[] = "'".$strs[$i]."'";
			}
			$data = implode(",", $key);
			$check = Model()->entry_forms($table, $table_name, $data);
			
			if(!$check)
			{
				return false;
			}
		}
	}
	else 
	{
		return false;
	}
	return true;
}

/**
 * 生成二维码
 * @param $url;链接
 * @param $size;大小
 * @param $type;false返回代码,true生成图片
 * @return ;二维码代码
 */
function yf_qrcode($url, $size = '3', $type = false, $filename = '')
{
	include(ROOT_PATH."Qiaqia/Vendor/PHPqrcode/phpqrcode.php");
	$errorLevel = "L";
	if(empty($url))
	{
		return "url不能为空";
	}
	if($type)
	{
		$file = ROOT_PATH.'Uploads/qrcode/'.date('Ym');
		if(!is_dir($file))
		{
			mkdir($file);
		}
		$path = $file."/".date('YmdHis').$filename.".png";
	}
	else 
	{
		$path = false;
	}
	
	$data = QRcode::png($url, $path, $errorLevel, $size);
	return $type == false ? $data : $path;
}
/**
 * 生成二维码
 * @param $url;链接
 * @param $size;大小
 * @param $type;false返回代码,true生成图片
 * @return ;二维码代码
 */
function yf_qrcode2($url, $size = '3', $type = false, $filename = '')
{
	include(ROOT_PATH."Qiaqia/Vendor/PHPqrcode/phpqrcode.php");
	$errorLevel = "L";
	if(empty($url))
	{
		return "url不能为空";
	}
	if($type)
	{
		$file = ROOT_PATH.'Uploads/qrcode';
		if(!is_dir($file))
		{
			mkdir($file);
		}
		$path = $file."/".date('YmdHis').$filename.".png";
	}
	else 
	{
		$path = false;
	}
	
	$data = QRcode::png($url, $path, $errorLevel, $size);
	return $type == false ? $data : $path;
}

/**
 * 下载文件（主要是图片）
 * @param $filename;图片路径(主要是本系统的服务器的路径:ROOT_PATH)
 */
function yf_down($filename)
{
	$fileinfo = pathinfo($filename);
	header('Content-type: application/x-'.$fileinfo['extension']);
	header('Content-Disposition: attachment; filename='.$fileinfo['basename']);
	header('Content-Length: '.filesize($filename));
	readfile($filename);
	exit();
}